package homework2;

import java.io.File;
import java.io.IOException;
import java.util.Objects;

/**
 * 实现将指定目录中的所有内容删除，包含子目录中的内容都要全部删除。
 */
public class FileOperateTest {

    public static void delete_file(File file) {
        if (file.isFile()) {  //是文件直接删除
            System.out.println(file.getName());
            boolean delete = file.delete();
            System.out.println(delete ? "文件删除成功！" : "文件删除失败");
        } else if (file.isDirectory()) { // 是目录继续判断然后执行删除操作
            File[] files = file.listFiles();
            if (files.length == 0) {  //判断是否是空文件夹
                boolean delete1 = file.delete();
                System.out.println(delete1 ? "文件夹删除成功！" : "文件夹删除失败");
            } else {
                for (File file1 : files) {
                    delete_file(file1);   //递归删除目录下的文件及文件夹
                }
                boolean delete = file.delete();
                //删除最后的空文件夹
                System.out.println(delete ? "文件夹删除成功！" : "文件夹删除失败");
            }
        } else {
            System.out.println("------------------");
        }
    }

    public static void main(String[] args) {

        //1，构造File类型的对象与D:/dir_test文件关联
        File file = new File("D:/dir_test");
        String absolutePath = file.getAbsolutePath();
        //准备数据，创建多级目录和文件
        boolean exists = file.exists();
        if (!exists) { //准备数据
            boolean mkdir = file.mkdir();
            System.out.println(mkdir ? "文件夹创建成功" : "文件夹创建失败");
            try {
                File file1 = null;
                //创建5个文件
                for (int i = 0; i < 5; i++) {
                    file1 = new File(absolutePath + "/file" + i + ".txt");
                    boolean newFile = file1.createNewFile();
                    System.out.println(newFile ? "文件创建成功" : "文件创建失败");
                }
                //创建5个文件夹
                for (int i = 0; i < 5; i++) {
                    file1 = new File(absolutePath + "/file" + i);
                    boolean newFile = file1.mkdir();
                    System.out.println(newFile ? "文件创建成功" : "文件创建失败");
                    //分别创建5个子文件
                    for (int j = 0; j < 5; j++) {
                        File file2 = new File(absolutePath + "/file" + i + "/sub" + j + ".txt");
                        boolean newFile1 = file2.createNewFile();
                        System.out.println(newFile1 ? "子文件创建成功" : "子文件创建失败");
                    }
                }
                //创建5个空文件夹
                for (int i = 5; i < 10; i++) {
                    file1 = new File(absolutePath + "/file" + i);
                    boolean newFile = file1.mkdir();
                    System.out.println(newFile ? "文件创建成功" : "文件创建失败");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else { //2，数据存在就删除数据
            System.out.println("文件夹已存在！");
            delete_file(file);
        }
    }
}
